﻿@using Kendo.Mvc.UI;
@using System.Web.Mvc;
@using TS2015.Models;
@{
    ViewBag.Title = "Thí sinh";
}
@{
    AjaxOptions aj = new AjaxOptions
    {
        InsertionMode = InsertionMode.Replace,
        UpdateTargetId = "content-main",
        LoadingElementId = "loading-icon",
        OnFailure = "AjaxFailure",
        OnBegin = "AjaxBegin",
        OnComplete = "AjaxComplete"
    };
    TS2015Context db = new TS2015Context();
}
@model IEnumerable<ResultTK>
<section class="panel">
    
    <header class="panel-heading">
        <h4 style="margin:0">Danh sách Thí sinh</h4>
    </header>
    <div class="panel-body">
        
        <div class="table-responsive">
            @( Html.Kendo().Grid(Model)
                .Name("griddata")
                .Pageable(page => page
                        .ButtonCount(7)
                        .Info(true)
                        .Refresh(true)
                            .Messages(mess => mess
                                     .Display("{0}-{1} của {2} bản ghi.")
                                            .Empty("Không có dữ liệu")
                                            .Refresh("Làm mới")
                                            .First("Trang đầu tiên")
                                            .Last("Trang cuối cùng")
                                            .Next("Trang tiếp")
                                            .Previous("Trang trước")
                                      )
                                     .Input(true)
                                            .Messages(mess =>
                                            {
                                                mess.Of("của {0}");
                                                mess.Page("Trang");
                                            })

                                )
                            .Columns(columns =>
                                {
                                    //columns.ClientTemplate("<input type='checkbox' #= CheckboxColumn? checked='checked': checked='' # class='chkbx' />");
                                    columns.Bound(p => p.MaTS).Width(90).Locked(true).Lockable(false).Title("Mã TS");
                                    columns.Bound(p => p.HoDem).Width(150).Locked(true);
                                    columns.Bound(p => p.Ten).Width(150).Locked(true);
                                    columns.Bound(p => p.GioiTinh).Width(110).Title("Giới tính");
                                    columns.Bound(p => p.NgaySinh).Width(110).Lockable(false);
                                    columns.Bound(p => p.SoDienThoai).Width(110).Lockable(false).Title("Điện thoại");
                                    columns.Bound(p => p.Email).Width(200).Lockable(false);
                                    columns.Bound(p => p.TenDanToc).Width(110).Lockable(false).Title("Dân tộc");
                                    columns.Bound(p => p.TenHuyen).Width(150).Lockable(false).Title("Huyện/Quận");
                                    columns.Bound(p => p.TenTinh).Width(150).Lockable(false).Title("Tỉnh/TP");
                                    columns.Bound(p => p.DiaChi).Width(250).Lockable(false);
                                    columns.Bound(p => p.TenTinhTruong).Width(150).Lockable(false).Title("Tỉnh/TP-Trường");
                                    columns.Bound(p => p.TenTruong).Width(250).Lockable(false).Title("Trường THPT");
                                    columns.Bound(p => p.DiemLop10).Width(130).Lockable(false);
                                    columns.Bound(p => p.DiemLop11).Width(130).Lockable(false);
                                    columns.Bound(p => p.DiemLop12).Width(130).Lockable(false);
                                    columns.Bound(p => p.DiemTBTHPT).Width(140).Lockable(false);
                                    columns.Bound(p => p.DiemTBTN).Width(130).Lockable(false);
                                    columns.Bound(p => p.TinhTrangTotNghiep).Width(110).Lockable(false).Title("Tốt nghiệp");
                                    columns.Bound(p => p.TenDoiTuong).Width(200).Lockable(false).Title("Đối tượng ưu tiên");
                                    columns.Bound(p => p.TenHeDaoTao).Width(150).Lockable(false);
                                    columns.Bound(p => p.TenKhoiThi).Width(110).Lockable(false);
                                    columns.Bound(p => p.TenNganh).Width(250).Lockable(false);
                                    columns.Bound(p => p.TenChuyenNganh).Width(250).Lockable(false);
                                    columns.Bound(p => p.NgayDangKy).Width(140).Lockable(false);
                                    columns.Bound(p => p.NgayDongTien).Width(140).Lockable(false);
                                    columns.Bound(p => p.NgayHoanThanhDK).Width(140).Lockable(false);

                                    columns.Template(@<text>Sửa</text>).ClientTemplate("<a class='k-button k-button-icontext' href='"  + Url.Action("EditRegistration", "CandidateManagement") + "/#=MaTS#'><span class='k-icon k-edit'></span>Sửa</a>").Title("Sửa");
                                    columns.Command(command =>
                                    {
                                        //command.Edit().Text("Sửa").UpdateText("Cập nhật");
                                        command.Destroy().Text("Xóa");
                                    })
                                        .Title("Xóa");
                                })
                                .Scrollable(scrollable => scrollable.Height(300))
                            .Reorderable(reorderable => reorderable.Columns(true))
                            .Resizable(resizable => resizable.Columns(true))
                    // Sửa kiểu popup
                    .Editable(editable =>
                    {
                        //editable.Mode(GridEditMode.PopUp).TemplateName("CommuneEditor");
                        editable.ConfirmDelete("Bạn có muốn xóa? (Lưu ý: các thông tin về điểm, tài khoản... sẽ bị xóa theo!)");
                        editable.Window(window =>
                        {
                            //window.Width(450);

                            window.Title("Thêm/sửa dữ liệu");
                            window.Animation(false);
                        });

                        editable.DisplayDeleteConfirmation("Bạn có muốn xóa? (Lưu ý: các thông tin về điểm, tài khoản... sẽ bị xóa theo!)");
                    })
                    .Sortable()    // Cho phép sắp xếp dữ liệu
                    // Cho phép lọc dữ liệu
                    .Filterable(filterable => filterable
                            .Messages(mess => mess
                                .And("Và")
                                .Clear("Xóa")
                                .Filter("Lọc")
                                .Info("Điều kiện lọc tìm kiếm")

                                )
                                .Extra(false)

                            .Operators(operators => operators
                                .ForString(str => str.Clear()
                                    .StartsWith("Bắt đầu với")
                                    .IsEqualTo("Đúng bằng")
                                    .IsNotEqualTo("Không bao gồm")
                                    .Contains("Chứa ký tự")
                                )
                                .ForNumber(num => num
                                        .Clear()
                                        .IsGreaterThan("Lớn hơn")
                                        .IsEqualTo("Bằng")
                                        .IsNotEqualTo("Nhỏ hơn")
                    )))

                // Cài đặt nguồn dữ liệu
                .DataSource(dataSource => dataSource
                        .Ajax()   // Mọi thao tác thực hiện thông qua Ajax
                        .ServerOperation(false) // Ko cho gửi request bằng cách load lại trang mà thông qua Ajax

                        .PageSize(10)   // Số row hiển thị trên Grid
                        .Model(model =>
                            {
                                model.Id(p => p.MaTS);  // Chỉ ra khóa của Grid
                                model.Field(p => p.MaTS).Editable(false);
                                //model.Field(p => p.MaKhoa).DefaultValue(1);
                            }
                            )
                        .Sort(item =>
                        {
                            // Mặc định khi load dữ liệu lên Grid sẽ sắp xếp giảm theo Id
                            item.Add(data => data.MaTS).Descending();
                        })
                    // Cài đặt các sự kiện khi thay đổi dữ liệu
                        .Events(events =>
                        {
                            events.Error("onError");
                            //events.Change("onRequestStart");
                            //events.Sync("sync_handler");
                            //events.Push("Success");
                            //events.Change("Success");
                            events.RequestEnd("onRequestEnd");
                            //events.RequestStart("onRequestStart");
                        })
                    // Gán Action khi thêm dữ liệu
                                    //.Create(update => update.Action( "Default", new { controller = "Common", action = "PhieuDangKy", Layout = "" }, aj))
                                //.Create(update => update.Action("EditingPopup_CreateCandidateList", "CandidateManagement"))
                    // Gán Action khi đổ dữ liệu lên Grid
                            .Read(read => read.Action("EditingPopup_ReadCandidateList", "CandidateManagement"))
                // Sửa
                            .Update(update => update.Action("EditingPopup_UpdateCandidateList", "CandidateManagement"))
                // Xóa
                            .Destroy(update => update.Action("EditingPopup_DestroyCandidateList", "CandidateManagement"))
                )
                .ToolBar(toolbar =>
                    {
                        //toolbar.Excel().Text("Xuất Excel");
                        toolbar.Template(@<text>
                            <div class="toolbar" style="float:right">
                                <a class="btn btn-danger k-grid-add" href="#">
                                    <i class="glyphicon glyphicon-plus"></i> Thêm mới
                                </a>
                                <button class="btn btn-danger" data-toggle="modal" data-target="#myModal">
                                    <i class="glyphicon glyphicon-import"></i> Nhập Excel
                                </button>
                                <button class="btn btn-danger" onclick="ExportExcel('Khu vực')">
                                    <span class="glyphicon glyphicon-export"></span> Xuất Excel
                                </button>
                            </div>
                            
                            </text>);

                    })
                    // Cài đặt thanh Menu bên trên Grid
               
                                                                                    .Events(events =>
                                                                                    {
                                                                                        //events.Change("onEdit");
                                                                                        //events.Cancel("onEdit");
                                                                                        events.Edit("onEdit");
                                                                                        //events.ColumnLock
                                                                                    })
                    //.ClientDetailTemplateId("client-template")
            )
        </div>
    </div>
</section>
@Html.Partial("_PopupInsert", new TS2015.ModelPopup { actionName = "ImportCandidate", controllerName = "RegistrationManagement" })

<script>
    function ExportExcel(Name) {
        //var dataSource = $("#griddata").data("kendoGrid").dataSource;
        $.getJSON("/CandidateManagement/GetCandidate",
                       function (dataSource) {
                           //If we want to show the filtered results
                           //var filteredDataSource = new kendo.data.DataSource({
                           //    data: dataSource.data(),
                           //    filter: dataSource.filter()
                           //});
                           //filteredDataSource.read();
                           //var dataView = filteredDataSource.view();
                           //var result = "";
                           //var dataView = dataSource;
                           var result = "";
                           // Get data

                           //Defining the headers
                           result += "<style>.text{ mso-number-format:'@Html.Raw("@")';} table { border-collapse: collapse;padding: 8px;} th {background-color: #ddd;} table, td, th { font-family: Times New Roman; font-size: 17px; border: 1px solid black; padding: 5px; border-width: thin; } </style>";
                           result += "<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>";
                           result += "<table><tr><th>STT</th><th>Mã TS</th><th>Họ đệm</th><th>Tên</th><th>Giới tính</th><th>Ngày sinh</th><th>Số điện thoại</th><th>Email</th><th>Dân tộc</th><th>Huyện</th><th>Tỉnh</th><th>Địa chỉ</th><th>Tỉnh(trường THPT)</th><th>Trường THPT</th><th>Điểm lớp 10</th><th>Điểm lớp 11</th><th>Điểm lớp 12</th><th>Điểm TBTHPT</th><th>Tình trạng tốt nghiệp</th><th>Năm tốt nghiệp</th><th>Đối tượng ưu tiên</th><th>Hệ đào tạo</th><th>Khối thi</th><th>Ngành</th><th>Chuyên ngành</th><th>Ngày đăng ký</th><th>Ngày đóng tiền</th><th>Ngày hoàn thành</th></tr>";
                           //Filling in the data
                           //console.log(dataSource);
                           var count = 0;
                           for (var i = 0; i < dataSource.length; i++) {
                               count = count + 1;
                               result += "<tr>";
                               result += "<td>"; result += count; result += "</td>";
                               result += "<td>"; result += dataSource[i].MaTS; result += "</td>";
                               result += "<td>"; result += dataSource[i].HoDem; result += "</td>";
                               result += "<td>"; result += dataSource[i].Ten; result += "</td>";

                               if (dataSource[i].GioiTinh == 0) {
                                   result += "<td>"; result += 'Nam'; result += "</td>";
                               }
                               else {
                                   result += "<td>"; result += 'Nữ'; result += "</td>";
                               }
                               // convert datetime
                               function convert(str) {
                                   if (str != null) {
                                       //console.log(str);
                                       var parsedDate = new Date(parseInt(str.substr(6)));
                                       var date = new Date(parsedDate),
                                           mnth = ("0" + (date.getMonth() + 1)).slice(-2),
                                           day = ("0" + date.getDate()).slice(-2);
                                       return [mnth, day, date.getFullYear()].join("/");
                                   }
                               }

                               //console.log((parsedDate))
                               result += "<td>"; result += (convert(dataSource[i].NgaySinh)); result += "</td>";
                               //console.log(dataSource[i].SoDienThoai)
                               //var SDT =""+ (dataSource[i].SoDienThoai).toString();
                               result += "<td class='text'>"; result += dataSource[i].SoDienThoai; result += "</td>";
                               result += "<td>"; result += dataSource[i].Email; result += "</td>";
                               result += "<td>"; result += dataSource[i].TenDanToc; result += "</td>";
                               //console.log(dataSource[i].MaDanToc);


                               result += "<td>"; result += dataSource[i].TenHuyen; result += "</td>";
                               result += "<td>"; result += dataSource[i].TenTinh; result += "</td>";
                               result += "<td>"; result += dataSource[i].DiaChi; result += "</td>";
                               result += "<td>"; result += dataSource[i].TenTinhTruong; result += "</td>";
                               result += "<td>"; result += dataSource[i].TenTruong; result += "</td>";
                               result += "<td>"; result += dataSource[i].DiemLop10; result += "</td>";
                               result += "<td>"; result += dataSource[i].DiemLop11; result += "</td>";
                               result += "<td>"; result += dataSource[i].DiemLop12; result += "</td>";
                               result += "<td>"; result += dataSource[i].DiemTBTHPT; result += "</td>";
                               if (dataSource[i].TinhTrangTotNghiep == 0) {
                                   result += "<td>"; result += 'Chưa tốt nghiệp'; result += "</td>";
                               }
                               else
                               {
                                   result += "<td>"; result += 'Đã tốt nghiệp'; result += "</td>";
                               }
                               result += "<td>"; result += dataSource[i].NamTotNghiep; result += "</td>";
                               result += "<td>"; result += dataSource[i].TenDoiTuong; result += "</td>";
                               result += "<td>"; result += dataSource[i].TenHeDaoTao; result += "</td>";
                               result += "<td>"; result += dataSource[i].TenKhoi; result += "</td>";
                               result += "<td>"; result += dataSource[i].TenNganh; result += "</td>";
                               result += "<td>"; result += dataSource[i].TenChuyenNganh; result += "</td>";
                               result += "<td>"; result += convert(dataSource[i].NgayDangKy); result += "</td>";
                               if (dataSource[i].NgayDongTien == null) {
                                   result += "<td>"; result += ''; result += "</td>";
                               }
                               else
                               {
                                   result += "<td>"; result += convert(dataSource[i].NgayDongTien); result += "</td>";
                               }
                               if (dataSource[i].NgayHoanThanhDK == null) {
                                   result += "<td>"; result += ''; result += "</td>";
                               }
                               else {
                                   result += "<td>"; result += convert(dataSource[i].NgayHoanThanhDK); result += "</td>";
                               }
                               result += "</tr>";
                           }
                           result += "</table>";
                           if (window.navigator.msSaveBlob) {
                               //Internet Explorer
                               window.navigator.msSaveBlob(new Blob([result]), 'Khu vực.xls');
                           }
                           else if (window.webkitURL != null) {
                               //Google Chrome and Mozilla Firefox
                               var aLink = document.createElement('a');
                               result = encodeURIComponent(result);
                               aLink.href = 'data:application/vnd.ms-excel;charset=utf-8,' + result;
                               aLink.download = '' + Name + '.xls';

                               aLink.click();
                           }
                           else {
                               //Everything Else
                               window.open(result);
                           }
                       });

    };
</script>